/*****************************************************************************/
/*                                                                           */
/*    Domino Operation System Kernel Module                                  */
/*                                                                           */
/*    Copyright (C) 2005 Laszlo Arvai                                        */
/*                                                                           */
/*    ------------------------------------------------------------------     */
/*    krnlMessageMap.c - Message Map                                         */
/*****************************************************************************/

///////////////////////////////////////////////////////////////////////////////
// Includes
#include "sysCompiler.h"
#include "krnlTypes.h"
#include "krnlMessageMap.h"
#include "krnlMessages.h"

///////////////////////////////////////////////////////////////////////////////
// function prototypes
void krnlSystemTimerIdleHandler(void);

///////////////////////////////////////////////////////////////////////////////
// Message Map
static const struct krnlMessageMapEntry l_message_map[] = 
{
  { 0, 0, NULL }
};

///////////////////////////////////////////////////////////////////////////////
// Idle handlers
void krnlIdleHandlers(void)
{
	krnlSystemTimerIdleHandler();
}


///////////////////////////////////////////////////////////////////////////////
// Dispatch message
void krnlDispatchMessage(krnlMessage* in_message)
{
  dosByte index;

  index = 0;

  while( l_message_map[index].Function != NULL )
  {
    // call message handler function if the masked id is equal
    if( (in_message->Id & l_message_map[index].Mask) == l_message_map[index].Id )
      (*l_message_map[index].Function)( in_message );

    index++;
  }
}
